
//3499.操作后最大活跃区段数I
class Solution {
public:
    int maxActiveSectionsAfterTrade(string s) {
        //进行优化
        int n=s.size(),i=0;
        int ret=0;
        int prev=INT_MIN,zero=0;   //用prev记录上一个0区段的长度,zero记录相邻两个0区段和的最大值
        while(i<n)
        {
            int start=i;
            while(i<n-1&&s[i]==s[i+1]) i++;  

            int len=i-start+1;  //计算该区段的长度
            if(s[start]=='1') ret+=len;   //如果是1直接加入答案
            else
            {
                zero=max(zero,prev+len);     //与最大值进行比较
                prev=len;
            }
            i++;
        }
        return ret+zero;
    }
};